<%--
  Created by IntelliJ IDEA.
  User: Administrator
  Date: 2021/12/2
  Time: 10:11
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>scope页面</title>
</head>
<body>
    <!--
        jsp的四大域对象
        四个域对象分别是:
            pageContext     (PageContextImpl类)  当前jsp页面范围内有效
            request         (HttpServletRequest类) 一次请求有效
            session         (HttpSession类)         一个会话范围内有效(打开浏览器访问服务器,直到关闭浏览器)
            application     (ServletContext类)   整个web工程范围内有效(只要web工程不停止,数据都在)

        域对象是可以像Map一样存取数据对象,四个域对象的功能是一样的,不同的是他们对数据的存取范围
        虽然四个域对象都是可以存取数据的,但是他们在使用上是有优先顺序的
        四个域在使用的时候,优先顺序分别是,他们从小到大的范围顺序
        pageContext  >>>   request  >>>   session >>> application

        为什么要从小到大呢,
        因为这些数据都是要占用内存的,所有能尽早释放就尽早释放,可以减少服务器的压力

    -->

<h1>scope.js页面</h1>
<%
    //往四个域中都分别保存数据
    pageContext.setAttribute("key" , "pageContext");
    request.setAttribute("key" , "request");
    session.setAttribute("key" , "session");
    application.setAttribute("key" , "application");
%>
pageContext域中是否有值:<%=pageContext.getAttribute("key")%><br/>
request域中是否有值:<%=request.getAttribute("key")%><br/>
session域中是否有值:<%=session.getAttribute("key")%><br/>
application域中是否有值:<%=application.getAttribute("key")%><br/>
这里可以发现,上面的四个域中都有值,因为都是在本页面中的

<%
    //请求转发
//request.getRequestDispatcher("/scope2.jsp").forward(request , response);
%>

<%--    示例说明：--%>
<%--    <jsp:forward page="/scope2.jsp"></jsp:forward>请求转发标签,他的功能就是请求转发--%>
<%--    page属性设置请求转发的路径--%>
<jsp:forward page="/scope2.jsp"></jsp:forward>


</body>
</html>
